package main

import (
	"fmt"
	"unsafe"
)

func main() {
	/*	有符号位 int
		int8 1byte -2^7 ~ 2^7 - 1
		int16 2byte -2^15 ~ 2^15 - 1
		int32 4byte -2^31 ~ 2^31 - 1
		int64 8byte -2^63 ~ 2^63 - 1

		无符号位 int
		uint8 1byte 0 ~ 2^8 - 1
		uint16 2byte 0 ~ 2^16 - 1
		uint32 4byte 0 ~ 2^32 - 1
		uint64 8byte 0 ~ 2^64 - 1
	*/

	// 如果没有指定类型，编译器会推算出来，如果没有指定 int 的位数，默认是 int型，也就是int32
	var data1 = 100
	data2 := 200
	var data3 int32
	// 但是int32 != int，因此不能赋值
	// 即不能 data3 = data2
	// 强转 int32()
	data3 = int32(data2)

	fmt.Printf("data1=%T,data2=%T\n", data1, data2) // data1=int, data2=int
	fmt.Printf("data3=%T\n", data3)                 // data3=int32
	var data4 int64 = 123456789

	fmt.Println(unsafe.Sizeof(data4)) // 8 -> 8个字节
}
